library(ggplot2)
library(tidyverse)
library(Seurat)
library(miscTools)
library(viridis)
library(venn)
Read in mutation table
mutation_table <- read.csv(file = paste(dir, "Data_input/geneCellMutationCounts_2.27.19.csv", sep = ""), header = T, row.names = 1)
head(mutation_table)
length(intersect(rownames(mutation_table), rownames(tiss_subset_tumor@meta.data)))
[1] 3620
#drop X.1 and X.2 to clean mutation table
mutation_table$X.1 <- NULL
mutation_table$X.2 <- NULL
Normalize the number of mutations by the raw # of transcripts found
# correct colnames
colnames(mutation_table) <- gsub(pattern = "\\.", replacement = "-", x = colnames(mutation_table))
# Subset table to tumor cells alone and
cells.to.use.tumor <- tiss_subset_tumor@meta.data$cell_id
mutation_table <- mutation_table[cells.to.use.tumor, ]
# save the names of the mutated genes
genes.to.use.mutations <- colnames(mutation_table)
length(genes.to.use.mutations)
[1] 14397
# set raw counts equal to the genes in the mutation table and subset to only tumor cells
raw_counts <- as.data.frame(as.matrix(tiss_subset_tumor@raw.data))[genes.to.use.mutations, cells.to.use.tumor]
# transpose the raw counts so that colnames are row ids and rownames are cell ids (same as the mutation table)
raw_counts1 <- as.data.frame(t(raw_counts))
dim(raw_counts1)
[1] 3620 14397
# normalize the mutation table by the raw counts
normalized_mutation_table <- mutation_table/raw_counts1
# Change NANs, NAs or Infs to 0
is.nan.data.frame <- function(x)
do.call(cbind, lapply(x, is.nan))
is.infinite.data.frame <- function(x)
do.call(cbind, lapply(x, is.infinite))
normalized_mutation_table[is.nan(normalized_mutation_table)] <- 0
normalized_mutation_table[is.na(normalized_mutation_table)] <- 0
normalized_mutation_table[is.infinite(normalized_mutation_table)] <- 0
Total Mutations Analysis
# Set Table to Report Only the Total Number of Mutations
total_mutations_table <- as.data.frame(rowSums(normalized_mutation_table))
head(total_mutations_table)
total_mutations_table$cell_name <- rownames(total_mutations_table)
colnames(total_mutations_table) <- c('total_mutations_score','cell_id')
head(total_mutations_table)
Add Metadata to normalized mutation table
total_mutations_table$cell_id <- rownames(total_mutations_table)
total_mutations_table_wmetadata <- left_join(total_mutations_table, tiss_subset_tumor@meta.data, by = 'cell_id')
rownames(total_mutations_table_wmetadata) <- total_mutations_table_wmetadata$cell_id
Total Mutations detected by Group
Add total mutation score to metadata
Plot

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkoU2V1cmF0KQpsaWJyYXJ5KG1pc2NUb29scykKbGlicmFyeSh2aXJpZGlzKQpsaWJyYXJ5KHZlbm4pCmBgYAoKUmVhZCBpbiBtdXRhdGlvbiB0YWJsZQpgYGB7cn0KIyBybShsaXN0PWxzKCkpCmRpciA8LSAiL215Vm9sdW1lL3NjZWxsX2x1bmdfYWRlbm9jYXJjaW5vbWEvIgpsb2FkKGZpbGU9cGFzdGUoZGlyLCJEYXRhX2lucHV0L05JMDRfdHVtb3Jfc2V1cmF0X29iamVjdC5SRGF0YSIsIHNlcD0iIikpCm11dGF0aW9uX3RhYmxlIDwtIHJlYWQuY3N2KGZpbGUgPSBwYXN0ZShkaXIsICJEYXRhX2lucHV0L2dlbmVDZWxsTXV0YXRpb25Db3VudHNfMi4yNy4xOS5jc3YiLCBzZXAgPSAiIiksIGhlYWRlciA9IFQsIHJvdy5uYW1lcyA9IDEpCmhlYWQobXV0YXRpb25fdGFibGUpCmxlbmd0aChpbnRlcnNlY3Qocm93bmFtZXMobXV0YXRpb25fdGFibGUpLCByb3duYW1lcyh0aXNzX3N1YnNldF90dW1vckBtZXRhLmRhdGEpKSkKYGBgCgpgYGB7cn0KI2Ryb3AgWC4xIGFuZCBYLjIgdG8gY2xlYW4gbXV0YXRpb24gdGFibGUKbXV0YXRpb25fdGFibGUkWC4xIDwtIE5VTEwKbXV0YXRpb25fdGFibGUkWC4yIDwtIE5VTEwKYGBgCgpOb3JtYWxpemUgdGhlIG51bWJlciBvZiBtdXRhdGlvbnMgYnkgdGhlIHJhdyAjIG9mIHRyYW5zY3JpcHRzIGZvdW5kCmBgYHtyfQojIGNvcnJlY3QgY29sbmFtZXMKY29sbmFtZXMobXV0YXRpb25fdGFibGUpIDwtIGdzdWIocGF0dGVybiA9ICJcXC4iLCByZXBsYWNlbWVudCA9ICItIiwgeCA9IGNvbG5hbWVzKG11dGF0aW9uX3RhYmxlKSkKIyBTdWJzZXQgdGFibGUgdG8gdHVtb3IgY2VsbHMgYWxvbmUgYW5kIApjZWxscy50by51c2UudHVtb3IgPC0gdGlzc19zdWJzZXRfdHVtb3JAbWV0YS5kYXRhJGNlbGxfaWQKbXV0YXRpb25fdGFibGUgPC0gbXV0YXRpb25fdGFibGVbY2VsbHMudG8udXNlLnR1bW9yLCBdCiMgc2F2ZSB0aGUgbmFtZXMgb2YgdGhlIG11dGF0ZWQgZ2VuZXMKZ2VuZXMudG8udXNlLm11dGF0aW9ucyA8LSBjb2xuYW1lcyhtdXRhdGlvbl90YWJsZSkKbGVuZ3RoKGdlbmVzLnRvLnVzZS5tdXRhdGlvbnMpCiMgc2V0IHJhdyBjb3VudHMgZXF1YWwgdG8gdGhlIGdlbmVzIGluIHRoZSBtdXRhdGlvbiB0YWJsZSBhbmQgc3Vic2V0IHRvIG9ubHkgdHVtb3IgY2VsbHMKcmF3X2NvdW50cyA8LSBhcy5kYXRhLmZyYW1lKGFzLm1hdHJpeCh0aXNzX3N1YnNldF90dW1vckByYXcuZGF0YSkpW2dlbmVzLnRvLnVzZS5tdXRhdGlvbnMsIGNlbGxzLnRvLnVzZS50dW1vcl0KIyB0cmFuc3Bvc2UgdGhlIHJhdyBjb3VudHMgc28gdGhhdCBjb2xuYW1lcyBhcmUgcm93IGlkcyBhbmQgcm93bmFtZXMgYXJlIGNlbGwgaWRzIChzYW1lIGFzIHRoZSBtdXRhdGlvbiB0YWJsZSkKcmF3X2NvdW50czEgPC0gYXMuZGF0YS5mcmFtZSh0KHJhd19jb3VudHMpKQpkaW0ocmF3X2NvdW50czEpCiMgbm9ybWFsaXplIHRoZSBtdXRhdGlvbiB0YWJsZSBieSB0aGUgcmF3IGNvdW50cwpub3JtYWxpemVkX211dGF0aW9uX3RhYmxlIDwtIG11dGF0aW9uX3RhYmxlL3Jhd19jb3VudHMxCiMgQ2hhbmdlIE5BTnMsIE5BcyBvciBJbmZzIHRvIDAKaXMubmFuLmRhdGEuZnJhbWUgPC0gZnVuY3Rpb24oeCkKZG8uY2FsbChjYmluZCwgbGFwcGx5KHgsIGlzLm5hbikpCmlzLmluZmluaXRlLmRhdGEuZnJhbWUgPC0gZnVuY3Rpb24oeCkKZG8uY2FsbChjYmluZCwgbGFwcGx5KHgsIGlzLmluZmluaXRlKSkKbm9ybWFsaXplZF9tdXRhdGlvbl90YWJsZVtpcy5uYW4obm9ybWFsaXplZF9tdXRhdGlvbl90YWJsZSldIDwtIDAKbm9ybWFsaXplZF9tdXRhdGlvbl90YWJsZVtpcy5uYShub3JtYWxpemVkX211dGF0aW9uX3RhYmxlKV0gPC0gMApub3JtYWxpemVkX211dGF0aW9uX3RhYmxlW2lzLmluZmluaXRlKG5vcm1hbGl6ZWRfbXV0YXRpb25fdGFibGUpXSA8LSAwCmBgYAoKVG90YWwgTXV0YXRpb25zIEFuYWx5c2lzCmBgYHtyfQojIFNldCBUYWJsZSB0byBSZXBvcnQgT25seSB0aGUgVG90YWwgTnVtYmVyIG9mIE11dGF0aW9ucwp0b3RhbF9tdXRhdGlvbnNfdGFibGUgPC0gYXMuZGF0YS5mcmFtZShyb3dTdW1zKG5vcm1hbGl6ZWRfbXV0YXRpb25fdGFibGUpKQpoZWFkKHRvdGFsX211dGF0aW9uc190YWJsZSkKdG90YWxfbXV0YXRpb25zX3RhYmxlJGNlbGxfbmFtZSA8LSByb3duYW1lcyh0b3RhbF9tdXRhdGlvbnNfdGFibGUpCmNvbG5hbWVzKHRvdGFsX211dGF0aW9uc190YWJsZSkgPC0gYygndG90YWxfbXV0YXRpb25zX3Njb3JlJywnY2VsbF9pZCcpCmhlYWQodG90YWxfbXV0YXRpb25zX3RhYmxlKQpgYGAKCkFkZCBNZXRhZGF0YSB0byBub3JtYWxpemVkIG11dGF0aW9uIHRhYmxlCmBgYHtyfQp0b3RhbF9tdXRhdGlvbnNfdGFibGUkY2VsbF9pZCA8LSByb3duYW1lcyh0b3RhbF9tdXRhdGlvbnNfdGFibGUpCnRvdGFsX211dGF0aW9uc190YWJsZV93bWV0YWRhdGEgPC0gbGVmdF9qb2luKHRvdGFsX211dGF0aW9uc190YWJsZSwgdGlzc19zdWJzZXRfdHVtb3JAbWV0YS5kYXRhLCBieSA9ICdjZWxsX2lkJykKcm93bmFtZXModG90YWxfbXV0YXRpb25zX3RhYmxlX3dtZXRhZGF0YSkgPC0gdG90YWxfbXV0YXRpb25zX3RhYmxlX3dtZXRhZGF0YSRjZWxsX2lkCmBgYAoKVG90YWwgTXV0YXRpb25zIGRldGVjdGVkIGJ5IEdyb3VwCmBgYHtyfQpwcl9tdXRhdGlvbl90YWJsZSA8LSBmaWx0ZXIodG90YWxfbXV0YXRpb25zX3RhYmxlX3dtZXRhZGF0YSwgYW5hbHlzaXMgPT0gJ2dyb3VwZWRfcHInKQpwZF9tdXRhdGlvbl90YWJsZSA8LSBmaWx0ZXIodG90YWxfbXV0YXRpb25zX3RhYmxlX3dtZXRhZGF0YSwgYW5hbHlzaXMgPT0gJ2dyb3VwZWRfcGQnKQpuYWl2ZV9tdXRhdGlvbl90YWJsZSA8LSBmaWx0ZXIodG90YWxfbXV0YXRpb25zX3RhYmxlX3dtZXRhZGF0YSwgYW5hbHlzaXMgPT0gJ25haXZlJykKCiMgRHJpdmVyIEdlbmUKdG90YWxfbXV0YXRpb25zX3RhYmxlX2RyaXZlciA8LSBmaWx0ZXIodG90YWxfbXV0YXRpb25zX3RhYmxlX3dtZXRhZGF0YSwgZHJpdmVyX2dlbmUgPT0gJ0VHRlInIHwgZHJpdmVyX2dlbmUgPT0gJ0FMSycpCmBgYAoKQWRkIHRvdGFsIG11dGF0aW9uIHNjb3JlIHRvIG1ldGFkYXRhCmBgYHtyfQp0aXNzX3N1YnNldF90dW1vckBtZXRhLmRhdGEgPC0gbGVmdF9qb2luKHRpc3Nfc3Vic2V0X3R1bW9yQG1ldGEuZGF0YSwgdG90YWxfbXV0YXRpb25zX3RhYmxlX3dtZXRhZGF0YVssMToyXSkKcm93bmFtZXModGlzc19zdWJzZXRfdHVtb3JAbWV0YS5kYXRhKSA8LSB0aXNzX3N1YnNldF90dW1vckBtZXRhLmRhdGEkY2VsbF9pZApzYXZlKHRpc3Nfc3Vic2V0X3R1bW9yLCBmaWxlPXBhc3RlKGRpciwiRGF0YV9pbnB1dC9OSTA4X3R1bW9yX3NldXJhdF9vYmplY3Rfd2l0aG11dC5SRGF0YSIsIHNlcD0iIikpCmBgYAoKUGxvdApgYGB7cn0KdG90YWxfbXRfc2NvcmUgPC0gcGFpcndpc2Uud2lsY294LnRlc3QoeCA9IHRvdGFsX211dGF0aW9uc190YWJsZV93bWV0YWRhdGEkdG90YWxfbXV0YXRpb25zX3Njb3JlLCBnID0gdG90YWxfbXV0YXRpb25zX3RhYmxlX3dtZXRhZGF0YSRhbmFseXNpcykKCiMgcGRmKGZpbGUgPSBwYXN0ZShkaXIsICJwbG90X291dC9OSTA4L05JMDhfdG90YWxfbXV0c19ieV9ncm91cC5wZGYiLCBzZXAgPSAiIikpCmdncGxvdCh0b3RhbF9tdXRhdGlvbnNfdGFibGVfd21ldGFkYXRhLCBhZXMoeCA9IGFuYWx5c2lzLCB5ID0gdG90YWxfbXV0YXRpb25zX3Njb3JlLCBmaWxsID0gYW5hbHlzaXMpKSArIGdlb21fYm94cGxvdChvdXRsaWVyLnNoYXBlID0gTkEpICsgCiAgICBnZW9tX2ppdHRlcihhbHBoYSA9IDEvOCwgYWVzKGNvbG91ciA9IGFuYWx5c2lzKSkgKyBndWlkZXMoY29sb3VyID0gRkFMU0UsIGZpbGwgPSBGQUxTRSkgKyB4bGFiKCJHcm91cCIpICsgeWxhYigiTXV0YXRpb24gU2NvcmUiKSArIAogICAgZ2d0aXRsZSgiRGlzdHJpYnV0aW9uIG9mIE11dGF0aW9uIFNjb3JlcyBwZXIgQ2VsbCIpICsgCiAgICBnZW9tX3NpZ25pZihjb21wYXJpc29ucyA9IGxpc3QoYygiZ3JvdXBlZF9wZCIsICJncm91cGVkX3ByIikpLCBtYXBfc2lnbmlmX2xldmVsPVRSVUUsIHlfcG9zaXRpb24gPSA0NSwgYW5ub3RhdGlvbnMgPSAnPCAyZS0xNicpICsgCiAgICBnZW9tX3NpZ25pZihjb21wYXJpc29ucyA9IGxpc3QoYygiZ3JvdXBlZF9wZCIsICJuYWl2ZSIpKSwgbWFwX3NpZ25pZl9sZXZlbD1UUlVFLCB5X3Bvc2l0aW9uID0gNTAsIGFubm90YXRpb25zID0gJzwgMmUtMTYnKSArIAogICAgZ2VvbV9zaWduaWYoY29tcGFyaXNvbnMgPSBsaXN0KGMoImdyb3VwZWRfcHIiLCAibmFpdmUiKSksIG1hcF9zaWduaWZfbGV2ZWw9VFJVRSwgeV9wb3NpdGlvbiA9IDQwLCBhbm5vdGF0aW9ucyA9ICcwLjAyMycpICsKICAgIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygibmFpdmUiID0gIlROIiwgImdyb3VwZWRfcHIiID0gIlBFUiIsICJncm91cGVkX3BkIiA9ICJQRCIpLCBsaW1pdHM9YygibmFpdmUiLCJncm91cGVkX3ByIiwiZ3JvdXBlZF9wZCIpKQojIGRldi5vZmYoKQoKIyBwZGYoZmlsZSA9IHBhc3RlKGRpciwgInBsb3Rfb3V0L05JMDgvTkkwOF90b3RhbF9tdXRzX2J5X2dyb3VwX3JpZGdlcGxvdC5wZGYiLCBzZXAgPSAiIikpCmdncGxvdCh0b3RhbF9tdXRhdGlvbnNfdGFibGVfd21ldGFkYXRhLCBhZXMoeCA9IHRvdGFsX211dGF0aW9uc19zY29yZSwgeSA9IGFuYWx5c2lzLCBmaWxsID0gYW5hbHlzaXMpKSArIGdlb21fZGVuc2l0eV9yaWRnZXMoYWxwaGE9LjcpICsgCiAgICB5bGFiKCJHcm91cCIpICsgeGxhYigiTXV0YXRpb24gU2NvcmUiKSArIHNjYWxlX3lfZGlzY3JldGUobGFiZWxzID0gYygiUEQiLCAiUEVSIiwgIlROIikpICsgCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsgdGhlbWUoYXhpcy50aXRsZS55ID0gZWxlbWVudF9ibGFuaygpKQojIGRldi5vZmYoKQoKIyBwZGYoZmlsZSA9IHBhc3RlKGRpciwgInBsb3Rfb3V0L05JMDgvTkkwOF90b3RhbF9tdXRzX2J5X2dyb3VwX2FuZF9wYXRpZW50LnBkZiIsIHNlcCA9ICIiKSkKZ2dwbG90KHRvdGFsX211dGF0aW9uc190YWJsZV93bWV0YWRhdGEsIGFlcyh4ID0gYW5hbHlzaXMsIHkgPSB0b3RhbF9tdXRhdGlvbnNfc2NvcmUsIGNvbG9yID0gcGF0aWVudF9pZCkpICsKICAgIGdlb21fcG9pbnQocG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXJkb2RnZShkb2RnZS53aWR0aD0wLjkpKSArCiAgICBnZW9tX2JveHBsb3Qob3V0bGllci5jb2xvdXIgPSBOQSwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aD0wLjkpKSArCiAgICB4bGFiKCJHcm91cCIpICsKICAgIHlsYWIoIk11dGF0aW9uIFNjb3JlIikgKwogICAgZ2d0aXRsZSgiRGlzdHJpYnV0aW9uIG9mIE11dGF0aW9uIFNjb3JlcyBwZXIgQ2VsbCIpICsKICAgIGd1aWRlcyhjb2xvdXI9Z3VpZGVfbGVnZW5kKHRpdGxlPSJSZXNwb25zZSBHcm91cCIpKSArCiAgICBndWlkZXMoZmlsbCA9IEZBTFNFLCBjb2xvciA9IEZBTFNFKSArCiAgICBzY2FsZV94X2Rpc2NyZXRlKGxhYmVscyA9IGMoIm5haXZlIiA9ICJUTiIsICJncm91cGVkX3ByIiA9ICJQRVIiLCAiZ3JvdXBlZF9wZCIgPSAiUEQiKSwgbGltaXRzPWMoIm5haXZlIiwiZ3JvdXBlZF9wciIsImdyb3VwZWRfcGQiKSkKIyBkZXYub2ZmKCkKCiMgcGRmKGZpbGUgPSBwYXN0ZShkaXIsICJwbG90X291dC9OSTA4L05JMDhfdG90YWxfbXV0c19ieV9wcmltdnNtZXQucGRmIiwgc2VwID0gIiIpKQpnZ3Bsb3QoZGF0YT1zdWJzZXQodG90YWxfbXV0YXRpb25zX3RhYmxlX3dtZXRhZGF0YSwgIWlzLm5hKHByaW1hcnlfb3JfbWV0YXN0YWljKSksIGFlcyh4ID0gcHJpbWFyeV9vcl9tZXRhc3RhaWMgLCB5ID0gdG90YWxfbXV0YXRpb25zX3Njb3JlLCBjb2xvciA9IGFuYWx5c2lzKSkgKwogICAgICBnZW9tX3BvaW50KHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyZG9kZ2UoZG9kZ2Uud2lkdGg9MC45KSkgKwogICAgICBnZW9tX2JveHBsb3Qob3V0bGllci5jb2xvdXIgPSBOQSwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aD0wLjkpKSArCiAgICAgIHhsYWIoIkdyb3VwIikgKwogICAgICB5bGFiKCJNdXRhdGlvbiBTY29yZSIpICsKICAgICAgZ2d0aXRsZSgiRGlzdHJpYnV0aW9uIG9mIE11dGF0aW9uIFNjb3JlcyBwZXIgQ2VsbCIpICsKICAgICAgZ3VpZGVzKGNvbG91cj1ndWlkZV9sZWdlbmQodGl0bGU9IlJlc3BvbnNlIEdyb3VwIikpICsKICAgICAgZ3VpZGVzKGZpbGwgPSBGQUxTRSkKIyBkZXYub2ZmKCkKYGBgCgo=